
package util;

import java.util.Date;
import java.util.GregorianCalendar;

/**Classe utilitaire de traitement des dates
 * @author V579656
 * @version 1.0
 * @since 01/09/2009
 */
public class DateUtil {
	
	public static final int A1950 = 1950;
	
	/**Cette m�thode calcule l'age r�volu d'une
	 * date donn�e en fonction de la date courante
	 * @param date une date donn�e
	 * @return l'age r�volu
	 * @throws NullPointerException si date est null 
	 * @throws IllegalArgumentException si dateNaissance < 01/01/1950
	 * ou dateNaissance > DateCourante
	 */
	public static int calculerAge(Date date) {
		if (date == null) {
			throw new NullPointerException("Date doit �tre valu�e");
		}
		GregorianCalendar gc1950 = new GregorianCalendar(A1950, 0, 1);
		GregorianCalendar gcn = new GregorianCalendar();
		gcn.setTime(date);
		GregorianCalendar gcc = new GregorianCalendar();

		if (gcn.before(gc1950) || gcn.after(gcc)) {
			throw new IllegalArgumentException(A1950 + "=< dateNaissance <= date courante");
		}
		int age = 0;
		age = gcc.get(GregorianCalendar.YEAR) - gcn.get(GregorianCalendar.YEAR);
		gcn.set(GregorianCalendar.YEAR, gcc.get(GregorianCalendar.YEAR));
		if (gcn.after(gcc)) {
			age --;
		}
		return age;
	}
	
}
